package models

import (
	"gorm.io/gorm"
)

// AuthUser 对应数据库表 auth_user
type AuthUser struct {
	gorm.Model
	ID          uint      `gorm:"primaryKey;autoIncrement;comment:主键，自增ID"`
	Username    string    `gorm:"unique;not null;comment:登录用户名"`
	Password    string    `gorm:"not null;comment:登录密码"`
	Realname    string    `gorm:"not null;default:'';comment:真实姓名"`
	Avatar      string    `gorm:"default:'';comment:头像地址"`
	Status      uint8     `gorm:"default:1;comment:状态标识，2禁用，1正常"`
	GroupID     uint      `gorm:"not null;default:0;comment:分组ID"`
	AppID       int       `gorm:"default:0;comment:数据归属"`
	LoginNum    uint      `gorm:"default:0;comment:登录次数"`
	LoginLastIP string    `gorm:"default:'';comment:最后登录IP"`
	LoginLastAt int64     `gorm:"comment:最后登录时间"`
	CreatedAt   int64     `gorm:"autoCreateTime;comment:创建时间戳"` // 修改为 int64 类型
	UpdatedAt   int64     `gorm:"autoUpdateTime;comment:更新时间戳"` // 修改为 int64 类型
	AuthGroup   AuthGroup `gorm:"foreignKey:ID;references:GroupID"`
}

type AuthUserList struct {
	ID          uint   `json:"id"`
	Username    string `json:"username"`
	Realname    string `json:"realname"`
	Avatar      string `json:"avatar"`
	Status      uint8  `json:"status"`
	AppID       int    `json:"app_id"`
	GroupID     uint   `json:"group_id"`
	LoginNum    uint   `json:"login_num"`
	GroupName   string `json:"group_name"`
	LoginLastIP string `json:"login_last_ip"`
	LoginLastAt string `json:"login_last_at"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
}

type AuthUserCreate struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Password string `json:"password"`
	Realname string `json:"realname"`
	Avatar   string `json:"avatar"`
	Status   uint8  `json:"status"`
	GroupID  uint   `json:"group_id"`
}

type AuthUserUpdate struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Password string `json:"password"`
	Realname string `json:"realname"`
	Avatar   string `json:"avatar"`
	Status   uint8  `json:"status"`
	GroupID  uint   `json:"group_id"`
}

// TableName 设置表名为 auth_user
func (AuthUser) TableName() string {
	return "auth_user"
}
